100 buff=PEEK_L(131072)+4000
110 base=buff+33000
120 BEEP 10000,200,0,400,-1
130 MODE 4
140 OPEN#3,con_512x256a0x0
150 PAPER#3,0
160 OPEN#4,con_448x200a32x16
170 PAPER#4,0
180 INK#4,7
190 CSIZE#4,1,0
200 CLS#3:AT#4,0,0
210 PRINT#4,"SELECT A DEMO:"\\"<F1> block & scroll"\"<F2> 3D wireframe objects"\"<F3> ball"\"<F4> qlrund"\"<ESC> end demo"
220 k=CODE(INKEY$)
230 IF k=232:bs_demo:GO TO 200
240 IF k=236:graf3d:GO TO 200
250 IF k=240:ball:GO TO 200
260 IF k=244:qlrund:GO TO 200
270 IF k=27:STOP
280 GO TO 220
290 DEFine PROCedure graf3d
300 BEEP 1000,3,100,100,1,0,8
310 CLS#3
320 AT#4,0,0
330 PRINT#4,"SELECT THE OBJECT:"
340 PRINT#4
350 PRINT#4,"<1> cube   (16 points, 12 lines)"\"<2> spring (34 points, 33 lines)"\"<3> bridge (50 points, 35 lines)"\"<4> ball   (169 points, 152 lines)"\"<5> peak   (242 points, 220 lines)"\"<6> torus  (312 points, 288 lines)"
360 PRINT#4\\"<ESC> return to main menu"
370 PRINT#4\\\"Rotate objects around X and Y axes with the arrow keys, around the Z axis with the F1 and F2 keys. Grow with F4 and shrink with F5. F3 toggles perspective on/off. Shiftthe object with the shift+arrow keys. Press ESC to exit."
380 a$=INKEY$
390 IF CODE(a$)>=49 AND CODE(a$)<=54 THEN 
400 BEEP 1000,3,100,100,1,0,8
410 i=CODE(a$)-48
420 RESET:PROSP 1:SC 1.7
430 IF i=1:LBYTES mdv1_cubo_d3d,base
440 IF i=2:LBYTES mdv1_molla_d3d,base
450 IF i=3:LBYTES mdv1_ponte_d3d,base:SC 3:TRANS 0,-20,0
460 IF i=4:LBYTES mdv1_sfera_d3d,base:SC 2.5
470 IF i=5:LBYTES mdv1_rete_d3d,base:SC 2
480 IF i=6:LBYTES mdv1_anello_d3d,base:SC 2
490 sh
500 GO TO 310
510 ELSE 
520 IF CODE(a$)=27:BEEP 1000,3,100,100,1,0,8:RETurn 
530 END IF 
540 GO TO 380
550 END DEFine 
560 DEFine PROCedure sh
570 SHOW base,buff
580 a$=INKEY$(#0)
590 IF a$<>"":GO TO 580
600 END DEFine 
610 DEFine PROCedure bs_demo
620 BEEP 1000,3,100,100,1,0,8
630 MODE 8
640 CLS#3
650 OPEN#5,con_200x200a100x32
660 OPEN#6,con_350x100a100x120
670 OPEN#7,con_100x256a350x0
680 PAPER#5,2:PAPER#6,1:PAPER#7,4,5
690 RANDOMISE 123456
700 FOR i=1 TO 100
710 w=RND(255):h=RND(255)
720 BLOCK#3,2*w,h,2*RND(255-w),RND(255-h),RND(255)
730 END FOR i
740 OVER#3,-1
750 FOR i=1 TO 90
760 w=RND(100):h=RND(100)
770 BLOCK#3,2*w,h,2*RND(255-w),RND(255-h),RND(255)
780 END FOR i
790 OVER#3,0
800 FOR i=1 TO 75:SCROLL#5,2:PAN#6,4:SCROLL#7,-3
810 WINDOW#5,452,200,32,16:PAPER#5,3,2:INK#5,6:STRIP#5,1:CLS#5:PRINT#5,"SCROLL & PAN"
820 FOR i=1 TO 47:SCROLL#5,4
830 FOR i=1 TO 19:PAN#5,16
840 FOR i=1 TO 47:SCROLL#5,-4
850 FOR i=1 TO 19:PAN#5,-16
860 CLOSE#5:CLOSE#6:CLOSE#7
870 PAUSE 35:MODE 4
880 CSIZE#4,1,0
890 END DEFine 
900 DEFine PROCedure ball
910 BEEP 1000,3,100,100,1,0,8
920 MODE 8:FILL 0:OVER 0
930 WINDOW#1, 512,256,0,0
940 PAPER#1, 5:INK#1, 0:CLS#1
950 LBYTES FLP1_scr4,131072
960 BLOCK#1, 511,56,0,198,2
970 FOR n=0 TO 2:WINDOW#n;512,58,0,198:PAPER#n;2:CLS#n
980 EXEC mdv1_amiga_exe
990 INK#1,7:CSIZE#1,0,0:CLS#1:INK#2,7
1000 PRINT#1;' Do you really need an Amiga or an ST..?'
1010 PRINT#1,'        Take a closer look at..':CSIZE#1,3,1:INK#1,5:FLASH#1,1:PRINT#1,'        SINCLAIRS QL!';:INK#1,0:FLASH#1,0:CSIZE#1,0,0
1020 PRINT#0,\\\\;'';
1030 PAUSE
1040 STOP
1050 END DEFine 
1060 DEFine PROCedure qlrund
1070 BEEP 1000,3,100,100,1,0,8
1080 MODE 8
1090 EXEC FLP1_QLRUND_EXE
1100 LBYTES FLP1_qlrund_scr,131072
1110 PAUSE
1120 STOP
1130 END DEFine 
